﻿/*----------------------------------------------------------------
       // Copyright (C) 2008 安华顺通(北京)科技有限公司
       // 版权所有。 
       //
       // 文件名：ExtendDataTypesContextMenu.cs
       // 文件功能描述：扩展类型组的右键菜单，添加具体的扩展类型。
       //
       // 
       // 创建标识：杨波
       //
       // 修改标识：杨波20080927
       // 修改描述：增加Int64类型。
       //
       // 修改标识：
       // 修改描述：
//----------------------------------------------------------------*/

#region UsingStatements

using System;
using System.Xml;
using RuleCode.compiler;

#endregion

namespace RuleCode.ObjectTree
{
    public partial class ExtendDataTypesContextMenu : CompileContextMenu
    {
        public ExtendDataTypesContextMenu()
        {
            //base.InitializeComponent();
            InitializeComponent();
            //base.baseContextMenuStrip.Items.Insert(0, addEDTToolStripMenuItem);
        }

        protected override void CompileNode()
        {
            base.CompileNode();
            SysCompiler.Instance.compileEDTs(Util.SelectedNode);
        }

        private void int64ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTInt64Property));
        }

        private void stringToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTStringProperty));
        }

        private void integerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTIntProperty));
        }

        private void realToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTRealProperty));
        }

        private void dateToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTDateProperty));
        }

        private void timeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTTimeProperty));
        }

        private void enumToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTEnumProperty));
        }

        private void containerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            addEDT(typeof(EDTContainerProperty));
        }

        private void addEDT(Type type)
        {

            string name = Util.addNode(OT.XPathRootSeperator + OT.XPathRoot + OT.ExtendDataTypes, OT.ExtendDataType,
                                       type, "");
            //    //MessageBox.Show("haha");
            //    XmlNode edtTemplateNode = TreeViewOpr.nodesTemplate.SelectSingleNode("//ExtendDataTypes");
            //    // XmlNode EDTsNode = Util.SysXmlDocument.SelectSingleNode("对象树//扩展类型");
            //    //XmlNode EDTsNode = Util.SysXmlDocument.SelectSingleNode("//扩展类型");
            //    //XmlNode EDTsNode = Util.SysXmlDocument.SelectSingleNode(".");
            //    XmlNode EDTsNode = Util.getAddingParentNode();
            //    //由于
            //    XmlNode edtNode = Util.SysXmlDocument.CreateElement("newEDT");
            //    //XmlNode tempNode = TreeViewOpr.typeMaxNum.SelectSingleNode("ExtendDataType");
            //    edtNode = edtTemplateNode.CloneNode(true).FirstChild;

            //    //DTsNode.AppendChild(edtNode);
            //    edtNode = Util.SysXmlDocument.ImportNode(edtNode, true);
            //    EDTsNode.InsertAfter(edtNode, EDTsNode.FirstChild);
            //    /*
            //    string ID = TreeViewOpr.typeMaxNum.SelectSingleNode("//ExtendDataType").Attributes["ID"].Value;
            //    edtNode.Attributes.Item(0).Value = ID;
            //    int idint = Convert.ToInt32(ID);
            //    idint++;
            //    TreeViewOpr.typeMaxNum.SelectSingleNode("//ExtendDataType").Attributes.Item(0).Value = Convert.ToString(idint);
            //    //ID++


            //    /*XmlElement edtEle = Util.SysXmlDocument.CreateElement("", "ExtendDataType1", "");
            //    edtEle.SetAttribute("ID", "3");
            //    edtEle.SetAttribute("Type", "ExtendDataType");
            //    edtNode.AppendChild(edtEle);*/
            //    string ID = Util.getMaxTypeID(edtNode);

            //    string name = OT.ExtendDataType + ID;
            //    SysTreeNode newEDT = new SysTreeNode(name);
            //    //newEDT.Tag = edtNode;
            //    newEDT.SysXmlNode = edtNode;
            //    Util.SelectedNode.Nodes.Insert(0, newEDT);
            //    Util.ActiveTreeView.SelectedNode = newEDT;
            //    Util.SelectedNode = newEDT;
            //    //newEDT.BeginEdit();


            //    BaseProperty property = (BaseProperty)Activator.CreateInstance(type);
            //    property.ID = ID;
            //    // EDTProperty property = new EDTProperty(ID);
            //    Util.SetPropertyContent(property);
            //    newEDT.Property = property;
            //    newEDT.SysXmlNode = edtNode;

            //    ((NameProperty)property).Name = name;
            //    property.SerializeToXML();
            //    foreach (XmlNode node in edtNode.ChildNodes)
            //    {
            //        Util.addSubNode(node, newEDT);
            //    }
            //    newEDT.SysXmlNode = Util.changeXmlNodeName(edtNode, name);

            //    //Util.MdiParent.refreshAllOT();
            //    TreeViewOpr.saveToXML();
            //    Util.ActiveTreeView.SelectedNode.BeginEdit();

        }
    }
}